package org.example.server;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import org.example.LoginUtil;
import org.example.im.SessionUtil;

public class AuthHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        if(SessionUtil.hasLogin(ctx.channel())){
            // 如果已经登陆了，则移除该执行器，减少逻辑，提升性能
            ctx.pipeline().remove(this);
            super.channelRead(ctx, msg);
        }else {
            // 未登录则关闭连接
            ctx.channel().close();
        }

    }

    @Override
    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
        if(SessionUtil.hasLogin(ctx.channel())){
            System.out.println("已经登录，无需再次认证，移除认证处理器 AuthHandler");
        }else {
            System.out.println("未登录，直接关闭连接。");
        }
    }
}
